package com.ruoyi.mall.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.mall.domain.vo.GoodsSpecificationsVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商城商品信息业务对象 mall_goods
 *
 * @author ruoyi
 * @date 2024-04-24
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class MallGoodsBo extends BaseEntity {

    /**
     * 商品ID
     */
    private Long goodsId;

    /**
     * 商品分类表主键
     */
    private Long categoryId;

    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String goodsName;

    /**
     * 商品简称
     */
    private String goodsShortName;

    /**
     * 图片地址
     */
    private Long goodsImg;

    /**
     * 小图片地址
     */
    private Long goodsSmallImg;

    /**
     * 大图片地址
     */
    private Long goodsBigImg;

    /**
     * 商品描述
     */
    private String goodsDesc;

    /**
     * 商品使用说明
     */
    private String goodsInstructions;

    /**
     * 支付规则 (0：积分 1：现金 2：积分+现金）
     */
    @NotNull(message = "支付规则 (0：积分 1：现金 2：积分+现金）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer payRule;

    /**
     * 商品积分数
     */
    @NotNull(message = "商品积分数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long goodsScore;

    /**
     * 商品现金（单位:分）
     */
    @NotNull(message = "商品现金（单位:分）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long goodsMoney;

    /**
     * 商品状态（0：下架 1：在售）
     */
    @NotNull(message = "商品状态（0：下架 1：在售）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer goodsStatus;

    /**
     * 删除标志(0：未删除 1：已删除)
     */
    private Integer yn;

    /**
     * 备注
     */
    private String remark;

    /**
     * 商品规格分类信息
     */
    private List<GoodsSpecificationsVo> lstGoodsSpecifications;

}
